<nz-tree-view [nzTreeControl]="treeControl" [nzDataSource]="dataSource" [nzBlockNode]="true">
    <nz-tree-node *nzTreeNodeDef="let node" nzTreeNodeIndentLine>
        <nz-tree-node-option [nzSelected]="selectListSelection.isSelected(node)" (nzClick)="clickTreeNode(node)" (dblclick)="dblClickTreeNode($event, node)" (contextmenu)="rightClickTreeNode($event, node)">
            <i *ngIf="hostCfg.isNotForward(node.host)" nz-icon nzType="code" nzTheme="outline" [ngStyle]="{'color': 'Maroon'}"></i>
            <i *ngIf="hostCfg.isForward(node.host)" nz-icon nzType="rise" nzTheme="outline" [ngStyle]="{'color': 'orange'}"></i>
            <i *ngIf="hostCfg.isGroup(node.host)" nz-icon nzType="folder" nzTheme="outline" [ngStyle]="{'color': 'SkyBlue'}"></i> {{ node.name }}
        </nz-tree-node-option>
    </nz-tree-node>

    <nz-tree-node *nzTreeNodeDef="let node; when: hasChild" nzTreeNodeIndentLine>
        <nz-tree-node-toggle>
            <i nz-icon [nzType]="treeControl.isExpanded(node) ? 'minus-square' : 'plus-square'" nzTheme="outline"></i>
        </nz-tree-node-toggle>
        <nz-tree-node-option [nzSelected]="selectListSelection.isSelected(node)" (nzClick)="clickTreeNode(node)" (dblclick)="dblClickTreeNode($event, node)" (contextmenu)="rightClickTreeNode($event, node)">
            <i *ngIf=" hostCfg.isNotForward(node.host) " nz-icon nzType="code" nzTheme="outline" [ngStyle]="{ 'color': 'Maroon'} "></i>
            <i *ngIf="hostCfg.isGroup(node.host) " nz-icon nzType="folder" nzTheme="outline" [ngStyle]="{ 'color': 'SkyBlue'} "></i> {{ node.name }}
        </nz-tree-node-option>
    </nz-tree-node>
</nz-tree-view>